Systems and circuits generally fall into one of two categories, either combinational or sequential. Combinational circuits generate outputs purely as a function of inputs. Sequential circuits generate outputs as a function of inputs and a current state, with the state changing over time. For combinational circuits, algorithms can quickly test and validate the logic. However for sequential circuits, the variance in output as a function of input over time can hinder testing and verification.